﻿var mysql = require('mysql');
var config =  require('../bin/config');
const log = require('./log');

//连接数据库
	var successInfo = {
		RESULT: "S",
		ERRMSG: "成功",
		code: 200,
		// data:res.json(ress)
	}
var pool = mysql.createPool({
    host: config.host,
    user: config.user,
    password: config.password,
    database: config.database,
    port: config.port,
    multipleStatements: true  //是否允许执行多条sql语句
})

// function count(tableName){

// }

 function select (sql, params = false) {
    return new Promise(function (reslove, reject) {

        var data ={}
        pool.getConnection(function (err, connection) {
            if (err) {
                console.error(err);
                return;
            }
            console.log(sql);
            if(params['tableName']){
                connection.query('select count(*) from '+params['tableName'],(error,res)=>{
                    if(error){
                        console.error(error);
                        return
                    }
                    data.total = res[0]['count(*)']
                })

            }
            connection.query(sql, params, function (error, res) {
                connection.release()
                if (error) {
                    console.error(err);
                    return;
                }
                data.data = res
                console.log(data.total);
                reslove(data)
            })
        })
    })
}
function getcount(open_id) {
    return new Promise(function (reslove, reject) {

        var data ={}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
        
            console.log("openid"+open_id);
             connection.query("select COUNT(*) from user where `user`.open_id = ? ",
              [open_id],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					// json.rtnError(res,err.message);
					return;
                }
                
					data.data = result
			
                connection.release();
            
                reslove(data)
			});
		});
    })
}

function insert(res, next,param,openid) {
    return new Promise(function (reslove, reject) {
		// 获取前台页面传过来的参数
		// ps:res和rsp有哪些属性可以去菜鸟教程的express部分查看，或者我在文末附上
        var data ={}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
			// 捕捉链接错误信息并返回
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
			// 执行sql语句，这里是插入一条信息query一共有三个参数，第一个是sql语句。第二个是参数数组，一定要和数据库的
			// 数据类型相对应，也要跟sql语句的占位符相对应。第三个是回调函数，err代表访问是否出错，result代表本次访问的回执信息
             connection.query("INSERT INTO `user`(open_id) VALUES(?)",
              [openid, param.user_name, param.gender],
               function (err, result) {
                // 插入失败，返回错误信息
                console.log(result);
				if(err){
                   console.log(err.message);
                   successInfo.ERRMSG="存入成功"
                    // json.rtnError(res,err.message);
                    data.data = err.message
					return;
                }
                
				// 插入成功返回操作成功，result可以自己打印看一下，当只做查询时返回查询到的数据，其他诸如增删改操作返回的是一个
				// 对象，其中affectedRows就是受影响的行数，其余的属性可以自行打印看看
				if (result.affectedRows>0) {
                    successInfo.ERRMSG="存入成功"
                    data.data = successInfo
				}
				// 释放连接，访问数据库完成一定要及时干掉此次连接请求，不然一会你的数据库就崩死了 
                connection.release();
            
                reslove(data)
			});
		});
    })

}
function profect(res, next,param,openid) {
    return new Promise(function (reslove, reject) {

        var data ={}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
        
            console.log("openid"+openid);
            // (jieduan,shiq,special_bing,guoming)
            // UPDATE `user` SET user_name='fhskjd',user.jieduan='ffshksjd' where `user`.open_id = 'omrGG5qal9fODBhbEn2yUiXZPQL0'
             connection.query("UPDATE `user` SET "+"`user`.jieduan= ?  ,"+"`user`.shiq= ?  ,"+"`user`.special_bing= ?  ,"+"`user`.guoming= ?  " +"where `user`.open_id = '" +openid+"'",
              [param.jieduan, param.shiq, param.special_bing,param.guoming],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					// json.rtnError(res,err.message);
					return;
                }
                
		
				if (result.affectedRows>0) {
					data.data = result
				}
			
                connection.release();
            
                reslove(data)
			});
		});
    })

}// 添加收藏记录
function collect (res,param,open_id) {
                 
    var date = new Date()// 时间戳为10位需*1000，时间戳为13位的话不需乘1000
    var Y = date.getFullYear() + '-'
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
    var D = (date.getDate()  < 10 ? '0' + (date.getDate()) : date.getDate())
    var T =date.getHours()+':'
    var Mi =date.getMinutes()+':'
    var Se =date.getSeconds()
    console.log('====================================');
    console.log( String(Y + M + D+T+Mi+Se));
    console.log('====================================');
    
    return new Promise(function (reslove, reject) {

        //插入成功

        var data ={}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
        
            // console.log("openid"+openid);
             connection.query("INSERT INTO `sz_menus`(open_id,caipu_id,avator,title,brief,col_time) VALUES(?,?,?,?,?,?) ",
              [open_id, param.caipu_id, param.avator,param.title,param.brief,String(Y + M + D)],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					// json.rtnError(res,err.message);
					return;
                }
                
		
				if (result.affectedRows>0) {
                    result.message="添加成功"
					data.data = result
				}
			
                connection.release();
            
                reslove(data)
			});
		});
    })

}

// 删除收藏记录
function delcollect (res,id) {
    
    return new Promise(function (reslove, reject) {

        var data ={ delstate:'0',data:{}}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
        
            // console.log("openid"+openid);
             connection.query("DELETE FROM sz_menus WHERE id= ? ",
              [id],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					json.rtnError(res,err.message);
					return;
                }
                
				if (result.affectedRows>0) {
                    result.message='删除成功'
                    data.delstate='1'
					data.data = result
				}
			
                connection.release();
            
                reslove(data)
			});
		});
    })
}
// 添加扫描记录
function scann (res,param,open_id) {
                 
    var date = new Date()// 时间戳为10位需*1000，时间戳为13位的话不需乘1000
    var Y = date.getFullYear() + '-'
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
    var D = (date.getDate()  < 10 ? '0' + (date.getDate()) : date.getDate())
    var T =date.getHours()+':'
    var Mi =date.getMinutes()+':'
    var Se =date.getSeconds()
    console.log('====================================');
    console.log( String(Y + M + D+T+Mi+Se));
    console.log('====================================');
    
    return new Promise(function (reslove, reject) {

       
        //插入成功

        var data ={}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
           

              
            
            // console.log("openid"+openid);
             connection.query("INSERT INTO `scan`(open_id,avator,title,brief,scan_time) VALUES(?,?,?,?,?) ",
              [open_id, param.avator,param.title,param.brief,String(Y + M + D)],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					// json.rtnError(res,err.message);
					return;
                }
                
		
				if (result.affectedRows>0) {
					data.data = result
				}
			
                connection.release();
            
                reslove(data)
			});
		});
    })

}
// 删除扫描记录
function delscann (res,open_id) {
    return new Promise(function (reslove, reject) {

        var data ={ delstate:'0',data:{}}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
        
            // console.log("openid"+openid);
             connection.query("DELETE FROM scan WHERE id= ? ",
              [open_id],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					json.rtnError(res,err.message);
					return;
                }
                
				if (result.affectedRows>0) {
                    result.message='删除成功'
                    data.delstate='1'
					data.data = result
				}
			
                connection.release();
            
                reslove(data)
			});
		});
    })
}


//新用户初始完善信息
function newuserchoice(res,param,open_id){
    return new Promise(function (reslove, reject) {
        //插入成功 

        var data ={}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
           
          
         var sql="INSERT INTO `user`(open_id,gender,birth,height,weight,kouwen,slim_height,slim_weight,aim_weight,special_type,irritability,special_illnesses,sg) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) "
        
         if(param.slim_height!=undefined){
            var slim_height=param.slim_height
            var slim_weight=param.slim_weight
            var aim_weight=param.aim_weight
         }else{
             var slim_height=null
             var slim_weight=null
             var aim_weight=null
         }
         if(param.special_type!=undefined){
             var sp_type=param.special_type
         }else{
            var sp_type=null
         }
         if(param.irritability!=undefined){
            var irritability=param.irritability
            var special_illnesses=param.special_illnesses
            var chronic=param.chronic
         }else{
             var irritability=null
             var special_illnesses=null
             var chronic=null
         }
            // console.log("openid"+openid);
             connection.query
         (sql,[open_id, param.gender,param.birth,param.height,param.weight,param.kouwen,slim_height,slim_weight,aim_weight
            ,sp_type,irritability,special_illnesses,
            chronic],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					// json.rtnError(res,err.message);
					return;
                }
                
		
				if (result.affectedRows>0) {
					data.data = result
				}
			
                connection.release();
            
                reslove(data)
			});
		});
    })

}
//更改初始完善信息
function updateuserchoice(res,param,open_id){
    return new Promise(function (reslove, reject) {
        //插入成功 

        var data ={}
		// 获取数据库的连接
		pool.getConnection(function (err, connection) {
	
			if (err) {
				json.rtnError(res,"数据库连接失败:"+err.message);
				return;
			}
            
            //  ; 
         var sql="update `user` set height = ? , weight=?,gender=?,kouwen=?,special_type=? ";
         
        
         sql =sql+" where  open_id='"+open_id+"'"
           
             console.log(sql);
             connection.query
         (sql,[param.height,param.weight,param.gender,param.kouwen,param.special_type],
               function (err, result) {
				// 插入失败，返回错误信息
				if(err){
                   console.log(err.message);
					// json.rtnError(res,err.message);
					return;
                }
                
		
				if (result.affectedRows>0) {
					data.data = result
				}
			
                connection.release();
            
                reslove(data)
			});
		});
    })

}


module.exports = {
   select:select,
   insert:insert,
//    profect:profect,
   collect:collect,
   getcount:getcount,
   delcollect:delcollect,
   scann:scann,
   delscann:delscann,
   newuserchoice:newuserchoice,
   updateuserchoice:updateuserchoice
}